package cn.qn.flowable.listener;

import lombok.RequiredArgsConstructor;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.ExecutionListener;
import org.springframework.stereotype.Component;

/**
 * 执行监听器:当监听的流程节点事件（如节点进入、离开）触发时，引擎会自动调用此方法。
 *
 * @author qn
 * @date 2025/06/22
 */
@Component
@RequiredArgsConstructor
public class BudgetCheckListener implements ExecutionListener {
    /**
     * 实现了一个简单的预算控制规则：当金额超过阈值时，标记后续流程需要高管审批。
     *
     * @param execution 执行
     */
    @Override
    public void notify(DelegateExecution execution) {
//        // 1. 预算检查
//        double amount = (double) execution.getVariable("amount");
//        if (amount > 10000) {
//            execution.setVariable("requireCFOApproval", true);
//        }
        
        // 2. 自动记录审计日志
//        auditService.log(execution.getProcessInstanceId(),
//                        "进入预算检查节点");
    }
}